package com.digicom.common.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.digicom.common.entity.Article;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 文章数据访问层
 */
public interface ArticleMapper extends BaseMapper<Article> {
    /**
     * 查询文章列表（分页）
     *
     * @param page 分页查询条件
     * @param article 文章查询条件
     * @return 文章分页列表
     */
    Page<Article> selectArticlePage(Page<Article> page, @Param("article") Article article);

    /**
     * 查询专题下的文章列表
     *
     * @param page 分页查询条件
     * @param topicId 专题ID
     * @return 文章分页列表
     */
    Page<Article> selectArticlesByTopic(Page<Article> page, @Param("topicId") Long topicId);

    /**
     * 查询用户发布的文章列表
     *
     * @param page 分页查询条件
     * @param userId 用户ID
     * @return 文章分页列表
     */
    Page<Article> selectArticlesByUser(Page<Article> page, @Param("userId") Long userId);

    /**
     * 根据ID查询文章详情
     *
     * @param articleId 文章ID
     * @return 文章详情
     */
    Article selectArticleDetail(@Param("articleId") Long articleId);

    /**
     * 更新文章阅读量
     *
     * @param articleId 文章ID
     * @param hitCount 阅读量增加值
     * @return 影响行数
     */
    int updateHitCount(@Param("articleId") Long articleId, @Param("hitCount") Integer hitCount);

    /**
     * 修改同步状态
     *
     * @param articleId 文章ID
     * @param syncApp 同步状态
     * @return 影响行数
     */
    int updateSyncStatus(@Param("articleId") Long articleId, @Param("syncApp") String syncApp);

    /**
     * 修改文章审核状态
     *
     * @param articleId 文章ID
     * @param status 审核状态
     * @param reviewBy 审核人
     * @param reviewRemark 审核备注
     * @return 影响行数
     */
    int updateArticleStatus(@Param("articleId") Long articleId, @Param("status") String status, 
                           @Param("reviewBy") String reviewBy, @Param("reviewRemark") String reviewRemark);
} 